package br.com.sms.dao;

import javax.persistence.EntityManager;
import javax.persistence.NoResultException;
import javax.persistence.Query;

import br.com.sms.conexao.Conexao;
import br.com.sms.dominio.Funcionalidade;
import br.com.sms.enuns.TipoFuncionalidade;

public class FuncionalidadeDAO {
	
	private EntityManager manager;
	private Conexao conexao;
	
	public FuncionalidadeDAO(){
		if(conexao == null)
			conexao = new Conexao();
	}
	
	public Funcionalidade salvar(Funcionalidade funcionalidade){
		manager = conexao.getEntityManger();
		manager.getTransaction().begin();
		if(funcionalidade.getId() > 0)
			manager.merge(funcionalidade);
		else
			manager.persist(funcionalidade);
		
		manager.getTransaction().commit();
		conexao.finalizaConexao();
		return funcionalidade;
	}
	
	public Funcionalidade recuperar(TipoFuncionalidade tipo){
		manager = conexao.getEntityManger();
		try{
		Query query = manager.createQuery("select f from Funcionalidade f where f.tipoFuncionalidade = :tipo");
		query.setParameter("tipo", tipo);
		return (Funcionalidade)query.getSingleResult();
		}catch (NoResultException e) {
			return null;
		}
	}
}
